Unity 3D: 鼠标和键盘自由切换场景视觉解析 |
您所在的位置:网站首页 › 好看盗墓电影 百度网盘下载 › Unity 3D: 鼠标和键盘自由切换场景视觉解析 |
Unity 3D: 鼠标和键盘自由切换场景视觉解析
符号
阅读:562
2021-04-01 13:09:40
评论:0
前言: 前面介绍过,鼠标控制 视觉移动文章,现在用键盘实现视觉移动,并可以让鼠标和键盘自由切换来控制当前角色的视觉移动。 脚本如下(C#): using System.Collections; using System.Collections.Generic; using UnityEngine; public class Camera_move : MonoBehaviour { public int speed = 5; public Transform bullet; // mouse view enum public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY =2 } public RotationAxes m_axes = RotationAxes.MouseXAndY; // 鼠标敏感度 public float m_sensitivityX = 10f; public float m_sensitivityY = 10f; // 水平方向 上的 视角旋转范围 public float m_minimumX = -360f; public float m_maximumX = 360f; // 垂直方向上的 视角旋转范围 public float m_minimumY = -45f; public float m_maximumY = 45f; float m_rotationY = 0f; // 默认 键盘控制视角 bool isKeyView = true; // Use this for initialization void Start () { // 防止刚体 影响物体旋转 if (GetComponent()) { GetComponent().freezeRotation = true; } } // Update is called once per frame void Update () { // 根据按键 W,A,S,D 移动 float x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float z = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.Translate(x, 0, z); print("x:" + x); // 发射子弹 if (Input.GetButtonDown("Fire1")) { Transform n = Instantiate( bullet, transform.position, transform.rotation); // 旋转方向 Vector3 front = transform.TransformDirection(Vector3.forward); // 给物体加力 n.GetComponent().AddForce(front * 2800); } // 切换 视角 ( 组合键shift + x 切换) if (Input.GetKey(KeyCode.LeftShift) && Input.GetKey(KeyCode.X)) { isKeyView = (isKeyView == true) ? false : true; } if (isKeyView) { keyControlView(); } else { mouseControlView(); } } void keyControlView() { // 摄像机镜头(视觉) 左右转向 if (Input.GetKey(KeyCode.Q)) { transform.Rotate(0, -25 * Time.deltaTime, 0, Space.Self); } if (Input.GetKey(KeyCode.E)) { transform.Rotate(0, 25 * Time.deltaTime, 0, Space.Self); } // 摄像机镜头 上下转向 if (Input.GetKey(KeyCode.Z)) { transform.Rotate(-25 * Time.deltaTime, 0, 0, Space.Self); } if (Input.GetKey(KeyCode.C)) { transform.Rotate(25 * Time.deltaTime, 0, 0, Space.Self); } // 摄像机升高 降低 if (Input.GetKey(KeyCode.H)) { transform.Translate(0, 5 * Time.deltaTime, 0); } if (Input.GetKey(KeyCode.N)) { transform.Translate(0, -5 * Time.deltaTime, 0); } } void mouseControlView() { if (m_axes == RotationAxes.MouseXAndY) { float m_rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * m_sensitivityX; m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); transform.localEulerAngles = new Vector3(-m_rotationY, m_rotationX, 0); } else if (m_axes == RotationAxes.MouseX) { transform.Rotate(0, Input.GetAxis("Mouse X") * m_sensitivityX, 0); } else { m_rotationY += Input.GetAxis("Mouse Y") * m_sensitivityY; m_rotationY = Mathf.Clamp(m_rotationY, m_minimumY, m_maximumY); transform.localEulerAngles = new Vector3(-m_rotationY, transform.localEulerAngles.y, 0); } } }把脚本挂载到 角色上就可以了。有兴趣 的可以试试~ (~ ̄▽ ̄)~ 标签:程序员编程语言 声明1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。 相关文章驾校怎样招生最有效 做一个外贸网站需要多少钱/价格?外贸独立站优化运营技巧是什么? 中国书画报20220321导读:他把自己的一切献给了一部小说 一个故事教你看懂什么是数字证书,它的原理是什么它的作用是什么总结 数字证书中主题(Subject)中字段的含义总结 EJBCA认证系统结构及相关介绍总结 mac antrl4环境安装&第一个程序总结 osg显示文字总结 Word文档重新打开时恢复到上次阅读位置总结 Word设置默认隐藏页面间空白总结 Excel中项目开发计划的日期编排公式技巧总结 Excel中如何改变符合条件的某行记录的背景色总结 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |